// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
    // 初始化请求配置
    uni.$u.http.setConfig((config) => {
        /* config 为默认全局配置*/
        config.baseURL = 'https://api.shop.eduwork.cn'; /* 根域名 */
        return config
    })
	
	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { 
		// 加请求偷
		config.header.Authorization = `Bearer ${vm.vuex_token}`
		
	    return config 
	}, config => { // 可使用async await 做异步操作
	    return Promise.reject(config)
	})
	
	// 响应拦截
	uni.$u.http.interceptors.response.use((res) => { /* 对响应成功做点什么 可使用async await 做异步操作*/
		
		const { statusCode , data } = res
		// console.log(res)
		return data
		
		
		
	}, (err) => { 
		// 对响应错误做点什么 （statusCode !== 200）
		// console.log(err)
		const {statusCode,data} = err
		 
		 if(statusCode == 400){
			uni.$u.toast(data.message)
		}else if(statusCode == 401){
			// 密码错误情况
			if(data.message == 'Unauthorized'){
				uni.$u.toast('密码错误')
			}else{
				// token过期，未登录权限		
				uni.$u.toast('无效token')
			}
		}else if(statusCode == 422){
			// 参数没有填写
			// console.log(Object.values(data.errors))
			uni.$u.toast(Object.values(data.errors)[0][0])
		} else {
			vm.$u.toast("请求超时")
		}
		
		return Promise.reject(err)
	})
	
	// 添加patch请求
	uni.$u.http.patch = (url,params = {},header = {})=>{
		// 模拟patch请求
		const _params = {
			...params,
			_method:'PATCH'
		}
		
		return uni.$u.http.post(url,_params,header)
	}
	
}